﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using NetDon.Utilities;

namespace NetDon.OA.Interface
{
    [Serializable]
    [DataContract]
    public class IssuingOrderData : eLogiticsDomainObject
    {

        public IEnumerable<IssuingOrderDeliveryData> IssuingOrderDeliveryDataList { get; set; }
        public IEnumerable<IssuingOrderVehicleData> IssuingOrderVehicleDataList { get; set; }

        public Guid Id { get; set; }

        public BusinessType BusinessType { get; set; }

        public string OrderCode { get; set; }

        public Guid GoodsShippedTypeId { get; set; }
        public string GoodsShippedTypeName { get; set; }


        public Guid? CustomerId { get; set; }
        public string CustomerName { get; set; }
        public string CustomerCode { get; set; }



        public Guid RouteTypeId { get; set; }
        public string RouteTypeName { get; set; }

        public DateTime ReceivingOrderDate { get; set; }

        public int OrderVehicleNumber { get; set; }

        public string TransportationPlanCode { get; set; }

        public string DeliveryProvince { get; set; }

        public string DeliveryCity { get; set; }


        public decimal? OrderVolumn { get; set; }
        public decimal? ActualOrderVolumn { get; set; }
        public decimal? OrderWeight { get; set; }
        public decimal? ActualOrderWeight { get; set; }
        public decimal? OrderQuantity { get; set; }
        public decimal? ActualOrderQuantity { get; set; }
        public CheckoutType CheckoutType { get; set; }
        public string CheckoutTypeName { get; set; }


        public string EntruckingDetails { get; set; }

        public Guid? EntruckingAddress { get; set; }
        public string EntruckingAddressName { get; set; }

        public DateTime? PlannedShippingDate { get; set; }


        public DateTime? ActualShippingDate { get; set; }

        public int? DelayedDays { get; set; }

        public string DelayedReasons { get; set; }
        public Guid? ShuntingPerson { get; set; }
        public string ShuntingPersonName { get; set; }


        public decimal? Length { get; set; }

        public decimal? Width { get; set; }

        public decimal? Height { get; set; }

        public decimal? UnitCost { get; set; }



        public Guid? PaymentMethod { get; set; }


        public string ShuntingCostExceptionComment { get; set; } //调车成本异常说明
        public bool IsShuntingCostException { get; set; }

        public Guid? OnsiteOperator { get; set; }
        public string OnsiteOperatorName { get; set; }


        public decimal ActualEntruckingAmount { get; set; }
        public int ActualEntruckingBoxAmount { get; set; }
        public int ActualEntruckingUnit { get; set; }

        public int? GoodsLeftBoxAmount { get; set; }

        public string GoodsJiltedReasons { get; set; } //甩货原因
        public bool IsGoodsJilted { get; set; }

        public string OnsiteEntruckingComments { get; set; }

        public DateTime? StartShippmentDate { get; set; }

        public OrderStatus OrderStatus { get; set; }
        public Guid AreaId { get; set; }
        public decimal ShuntingCost { get; set; }
   

        public decimal? GoodsUnloadingCost { get; set; }

        public bool IsClientReturnVisit { get; set; }
        public string ClientTelephone { get; set; }

        public decimal? Settlement { get; set; }
    }
    [Serializable]
    public class IssuingOrderDeliveryData : eLogiticsDomainObject
    {
        [DataMember]
        public Guid Id { get; set; }

        public BusinessType BusinessType { get; set; }
        [DataMember]
        public string OrderCode { get; set; }

        [DataMember]
        public string TransportationPlanCode { get; set; }
        [DataMember]
        public Guid AreaId { get; set; }

        [DataMember]
        public Guid IssuingOrderId { get; set; }

        [DataMember]
        public string DeliveryOrderCode { get; set; }

        [DataMember]
        public string Remark { get; set; }

        [DataMember]
        public Guid? DeliveryOrderType { get; set; }
        public string DeliveryCity { get; set; }
        public string DeliveryCityName { get; set; }
        public string DeliveryAddress { get; set; }

        public decimal? OrderVolumn { get; set; }

        public decimal? OrderWeight { get; set; }

        public decimal? OrderQuantity { get; set; }


        public decimal? ActualEntruckingOrderQuantity { get; set; }

        public decimal? ActualEntruckingOrderVolumn { get; set; }

        public decimal? ActualEntruckingOrderWeight { get; set; }

        public decimal? RevenueUnitCost { get; set; }
        public decimal? GoodsUnloadingPriceRatio { get; set; }

        public decimal? UnitCost { get; set; }

    }

    [Serializable]
    public class IssuingOrderVehicleData : eLogiticsDomainObject
    {
        [DataMember]
        public Guid Id { get; set; }


        [DataMember]
        public Guid AreaId { get; set; }

        [DataMember]
        public Guid? IssuingOrderId { get; set; }




        public decimal? CarSharingPrice { get; set; }

        //public decimal? GoodsUnloadingPirce { get; set; }


        public Guid? VechicleModel { get; set; }
        public string VechicleModelName { get; set; }


        public string VehicleNumber { get; set; }

        public string DriverName { get; set; }

        public string DriverTelephone { get; set; }

        public DateTime? DriverAppointedDate { get; set; }

        public DateTime? DriverOnboardDate { get; set; }

        public decimal? DriverDelayedHours { get; set; }

        public string DriverDelayedReasons { get; set; }

    }
}